package models

import "gorm.io/gorm"

type Order struct {
	gorm.Model
	UserId  int     `gorm:"type:int(11);index;comment:用户id" json:"userId"`
	OrderSn string  `gorm:"type:char(36);not null;unique;comment:订单编号" json:"orderSn"`
	Amount  float64 `gorm:"type:decimal(10,2);default:0.00;comment:订单金额" json:"amount"`
	Status  int     `gorm:"int(1);default:0;comment:订单状态: 0交易创建 1未付款交易超时关闭 2交易支付成功 3交易结束" json:"status"`
	PayType int     `gorm:"type:tinyint(1);default:0;comment:支付方式:0支付宝 1微信" json:"payType"`
}

// 订单商品表
type OrderGoods struct {
	gorm.Model
	OrderId    int     `gorm:"type:int(11);index;comment:订单id" json:"orderId"`
	GoodsId    int     `gorm:"type:int(11);index;comment:商品id" json:"goodsId"`
	GoodsTitle string  `gorm:"type:varchar(50);comment:商品标题" json:"goodsTitle"`
	GoodsNum   int     `gorm:"type:int(11);default:0;comment:商品数量" json:"goodsNum"`
	GoodsPrice float64 `gorm:"decimal(10,2);default:0.00;comment:商品价格" json:"goodsPrice"`
}

// 订单创建
func (o *Order) Create() error {
	return DB.Debug().Create(&o).Error
}

// 创建订单商品
func (og *OrderGoods) Create() error {
	return DB.Debug().Create(&og).Error
}

// 修改订单状态
func (o *Order) UpdateOrderStatus(orderSn string, status int) error {
	return DB.Debug().Model(&Order{}).Where("order_sn = ?", orderSn).Update("status", status).Error
}
